Download this file

1752 lines (1752 with data), 130.5 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "import random\n",
        "import time\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)"
      ],
      "execution_count": 134,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 135,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XPBvnB95jg4b",
        "outputId": "7ce8f00a-c289-43e0-f2e8-8a7392b1949a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "fc_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1, activation=None)])\n",
        "fc_model.summary()"
      ],
      "execution_count": 136,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_22\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_69 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_70 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_71 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_72 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_73 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_74 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_75 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 5252097 (20.04 MB)\n",
            "Trainable params: 5252097 (20.04 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "c036f37d-cf89-4253-91c6-41f42e0e5b48",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Here, we replace the dense layer with our MPS.\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 137,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_23\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_76 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_33 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_34 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_35 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_77 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 19457 (76.00 KB)\n",
            "Trainable params: 19457 (76.00 KB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "X = np.concatenate([np.random.randn(20, 2) + np.array([3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, -3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([3, -3])])\n",
        "\n",
        "Y = np.concatenate([np.ones((40)), -np.ones((40))])"
      ],
      "execution_count": 138,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "2eaa2b62-156e-45aa-b363-4afc848ed93a"
      },
      "execution_count": 139,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710189175.0417936\n",
            "Mon Mar 11 20:32:55 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "e13ea55d-3a2f-4285-e00e-0703e9c30e30",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 140,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 1.0021 - 1s/epoch - 471ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0016 - 18ms/epoch - 6ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0005 - 18ms/epoch - 6ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0001 - 19ms/epoch - 6ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0004 - 18ms/epoch - 6ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.9996 - 17ms/epoch - 6ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.9991 - 18ms/epoch - 6ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9977 - 19ms/epoch - 6ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9941 - 17ms/epoch - 6ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9843 - 16ms/epoch - 5ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9597 - 17ms/epoch - 6ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.9041 - 17ms/epoch - 6ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.7824 - 18ms/epoch - 6ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.5358 - 18ms/epoch - 6ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.1836 - 17ms/epoch - 6ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.1592 - 16ms/epoch - 5ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.1048 - 18ms/epoch - 6ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0418 - 17ms/epoch - 6ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0775 - 17ms/epoch - 6ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0776 - 19ms/epoch - 6ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0444 - 17ms/epoch - 6ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0186 - 18ms/epoch - 6ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0235 - 14ms/epoch - 5ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0307 - 17ms/epoch - 6ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0192 - 16ms/epoch - 5ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0120 - 17ms/epoch - 6ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0139 - 18ms/epoch - 6ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0148 - 17ms/epoch - 6ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0125 - 15ms/epoch - 5ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0098 - 19ms/epoch - 6ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0098 - 17ms/epoch - 6ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0097 - 17ms/epoch - 6ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0090 - 18ms/epoch - 6ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0081 - 17ms/epoch - 6ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0079 - 16ms/epoch - 5ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0077 - 18ms/epoch - 6ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0073 - 18ms/epoch - 6ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0071 - 16ms/epoch - 5ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0069 - 18ms/epoch - 6ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0065 - 16ms/epoch - 5ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0062 - 19ms/epoch - 6ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0061 - 18ms/epoch - 6ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0060 - 20ms/epoch - 7ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0057 - 18ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0055 - 19ms/epoch - 6ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0054 - 18ms/epoch - 6ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0052 - 17ms/epoch - 6ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0051 - 18ms/epoch - 6ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0049 - 16ms/epoch - 5ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0047 - 18ms/epoch - 6ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0045 - 17ms/epoch - 6ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0044 - 17ms/epoch - 6ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0043 - 19ms/epoch - 6ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0041 - 19ms/epoch - 6ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0041 - 20ms/epoch - 7ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0039 - 17ms/epoch - 6ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0038 - 18ms/epoch - 6ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0037 - 16ms/epoch - 5ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0036 - 16ms/epoch - 5ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0035 - 15ms/epoch - 5ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0034 - 15ms/epoch - 5ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0033 - 17ms/epoch - 6ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0032 - 17ms/epoch - 6ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0031 - 17ms/epoch - 6ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0031 - 17ms/epoch - 6ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0030 - 19ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0029 - 19ms/epoch - 6ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0028 - 19ms/epoch - 6ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0027 - 17ms/epoch - 6ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0027 - 17ms/epoch - 6ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0026 - 19ms/epoch - 6ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0025 - 20ms/epoch - 7ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0024 - 16ms/epoch - 5ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0024 - 17ms/epoch - 6ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0023 - 18ms/epoch - 6ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0023 - 18ms/epoch - 6ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0022 - 15ms/epoch - 5ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0021 - 17ms/epoch - 6ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0021 - 18ms/epoch - 6ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0021 - 19ms/epoch - 6ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0020 - 17ms/epoch - 6ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0019 - 17ms/epoch - 6ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0019 - 17ms/epoch - 6ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0018 - 15ms/epoch - 5ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0017 - 19ms/epoch - 6ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0016 - 17ms/epoch - 6ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0016 - 18ms/epoch - 6ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0015 - 16ms/epoch - 5ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0015 - 16ms/epoch - 5ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0014 - 18ms/epoch - 6ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0014 - 19ms/epoch - 6ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0013 - 18ms/epoch - 6ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0013 - 16ms/epoch - 5ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0012 - 17ms/epoch - 6ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0012 - 16ms/epoch - 5ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0012 - 18ms/epoch - 6ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 0.0010 - 18ms/epoch - 6ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 0.0010 - 19ms/epoch - 6ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 9.7409e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 9.5182e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 9.1641e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 8.8923e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 8.5503e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 8.4071e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 8.1484e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 7.8229e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 7.6303e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 7.3086e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 7.1643e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 6.8160e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 6.7722e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 6.5024e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 6.0256e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 5.9318e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 5.6620e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 5.5093e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 5.2077e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 5.0626e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 4.8935e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 4.5884e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 4.4009e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 4.1735e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 3.9622e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 3.8487e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 3.6213e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 3.5117e-04 - 15ms/epoch - 5ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 3.2646e-04 - 14ms/epoch - 5ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 3.1697e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 2.9274e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 2.9940e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 2.8460e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 2.5450e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 2.4400e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 2.2745e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 2.1464e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 2.0077e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 1.9056e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 1.8874e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 1.6351e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 1.6039e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 1.4652e-04 - 16ms/epoch - 5ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 1.3407e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 1.3287e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 1.1890e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 1.0898e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 9.8663e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 9.3710e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 8.5589e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 8.2118e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 7.1380e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 6.7004e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 6.2227e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 5.9195e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 5.2450e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 4.9782e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 4.5510e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 4.1121e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 3.5794e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 3.4199e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 3.0037e-05 - 15ms/epoch - 5ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 2.8668e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 2.6358e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 2.4668e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 2.2161e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 1.9814e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 1.9048e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 1.8050e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 1.6380e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 1.6450e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 1.3448e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 1.4922e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 1.1834e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 1.2367e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 1.0980e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 1.0074e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 1.0041e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 9.5531e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 8.6382e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 8.0530e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 7.6759e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 7.0127e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 6.9159e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 6.1823e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 6.4153e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 5.5746e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 5.6664e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 5.1021e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 4.9540e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 4.9088e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 4.5827e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 4.5273e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 4.3124e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 4.3919e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 3.9479e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 3.7860e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 3.6308e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 3.6710e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 3.3749e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 3.2432e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 3.1128e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 3.0644e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 3.0469e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 2.9943e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 2.9023e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 2.7196e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 2.7582e-06 - 15ms/epoch - 5ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 2.5201e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 2.5737e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 2.4184e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 2.4163e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 2.3764e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 2.1795e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 2.4137e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 2.0742e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 2.3491e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 2.2236e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 2.1595e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 1.9961e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 2.1260e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 1.9061e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 2.0857e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 2.0062e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 2.0786e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 1.8115e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 1.8144e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 1.7661e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 1.6554e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 1.7530e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 1.7014e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 1.5123e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 1.5830e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 1.5712e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 1.4698e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 1.4108e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 1.4383e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 1.4115e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 1.3523e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 1.2933e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 1.3162e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 1.2208e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 1.3694e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 1.1935e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 1.2118e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 1.2721e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 1.1953e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 1.1799e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 1.1278e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 1.1344e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 1.0392e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 1.2257e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 1.3530e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 1.0101e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 1.3714e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 9.6817e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 1.0236e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 9.6564e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 1.0009e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 9.1107e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 1.0579e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 9.4037e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 9.8052e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 8.8249e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 9.7774e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 8.7820e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 8.9367e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 9.3395e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 8.0475e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 8.7449e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 8.6845e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 8.7589e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 8.2748e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 8.5347e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 7.6800e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 7.7319e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 7.8515e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 7.0338e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 8.1645e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 7.8533e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 8.4585e-07 - 15ms/epoch - 5ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 8.4326e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 7.5838e-07 - 16ms/epoch - 5ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 8.4119e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 6.7976e-07 - 17ms/epoch - 6ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 7.4326e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 7.0598e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 7.0335e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 7.6910e-07 - 20ms/epoch - 7ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 6.9040e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 7.1682e-07 - 19ms/epoch - 6ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 6.4526e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 6.6117e-07 - 18ms/epoch - 6ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 6.2166e-07 - 20ms/epoch - 7ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7882f636ac80>"
            ]
          },
          "metadata": {},
          "execution_count": 140
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "7761d09d-f845-4869-aa8a-87eb6d988348",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 442
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 141,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 0s 3ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7882f4955db0>"
            ]
          },
          "metadata": {},
          "execution_count": 141
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "d60fc12d-d36b-4362-9f4f-9fd595d4039d"
      },
      "execution_count": 142,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710189187.204739\n",
            "Mon Mar 11 20:33:07 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "Ft6S13x6KuEQ",
        "outputId": "b00ff900-b728-4055-b5e6-78b4cd95c467"
      },
      "execution_count": 143,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710189187.215356\n",
            "Mon Mar 11 20:33:07 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "0f419f91-f233-4a7e-9d5b-4adc64dc4fed",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11384
        }
      },
      "source": [
        "fc_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "fc_model.fit(X, Y, epochs=300, verbose=2)\n",
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 144,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 0.8077 - 909ms/epoch - 303ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.3654 - 67ms/epoch - 22ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.2358 - 69ms/epoch - 23ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.1570 - 69ms/epoch - 23ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0750 - 66ms/epoch - 22ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0943 - 70ms/epoch - 23ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0762 - 71ms/epoch - 24ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0634 - 69ms/epoch - 23ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0530 - 70ms/epoch - 23ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0533 - 71ms/epoch - 24ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0454 - 75ms/epoch - 25ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0519 - 72ms/epoch - 24ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0438 - 72ms/epoch - 24ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0387 - 77ms/epoch - 26ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0405 - 72ms/epoch - 24ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0349 - 74ms/epoch - 25ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0315 - 69ms/epoch - 23ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0349 - 70ms/epoch - 23ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0281 - 72ms/epoch - 24ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0297 - 72ms/epoch - 24ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0276 - 76ms/epoch - 25ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0278 - 75ms/epoch - 25ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0243 - 72ms/epoch - 24ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0221 - 71ms/epoch - 24ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0228 - 81ms/epoch - 27ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0255 - 83ms/epoch - 28ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0218 - 76ms/epoch - 25ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0196 - 73ms/epoch - 24ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0232 - 69ms/epoch - 23ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0186 - 74ms/epoch - 25ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0201 - 69ms/epoch - 23ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0181 - 71ms/epoch - 24ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0158 - 68ms/epoch - 23ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0137 - 76ms/epoch - 25ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0151 - 70ms/epoch - 23ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0114 - 74ms/epoch - 25ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0087 - 77ms/epoch - 26ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0099 - 71ms/epoch - 24ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0084 - 70ms/epoch - 23ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0061 - 66ms/epoch - 22ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0054 - 66ms/epoch - 22ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0047 - 68ms/epoch - 23ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0040 - 68ms/epoch - 23ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0037 - 71ms/epoch - 24ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0034 - 69ms/epoch - 23ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0027 - 64ms/epoch - 21ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0024 - 67ms/epoch - 22ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0026 - 72ms/epoch - 24ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0021 - 72ms/epoch - 24ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0014 - 68ms/epoch - 23ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0013 - 69ms/epoch - 23ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0015 - 68ms/epoch - 23ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 8.1042e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 7.0970e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 6.6552e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 4.5170e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 4.6658e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 2.5754e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 2.9446e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 2.4335e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 2.3144e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 1.2578e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 1.0893e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 8.3306e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 8.2175e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 8.6310e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 1.2073e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 1.2770e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 9.3628e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 1.3192e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 9.4678e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 6.1069e-05 - 75ms/epoch - 25ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 3.2516e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 3.2616e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 2.4551e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 1.7376e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 1.8156e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 1.3154e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 1.3557e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 1.6364e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 1.9857e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 1.5322e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 1.5739e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 1.5606e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 2.3604e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 4.4876e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 3.5353e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 3.4980e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 2.1020e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 2.5506e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 3.2446e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 1.7086e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 1.3280e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 1.8934e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 3.7801e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 2.9961e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 2.6707e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 9.1113e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 1.5711e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 2.9214e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 1.8467e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 7.7566e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 9.3354e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 9.1099e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 1.1135e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 6.0798e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 6.1059e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 5.6706e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 4.0509e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 5.3665e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 8.2861e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 8.1747e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 1.1057e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 7.3000e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 5.8941e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 1.0361e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 7.2258e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 7.2415e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 9.5102e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 5.6981e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 3.5726e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 3.9312e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 4.8243e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 5.2792e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 4.4380e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 3.0823e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 3.8193e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 7.0139e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 1.3198e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.5051e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 3.2669e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 1.2297e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 1.6567e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 1.7536e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 1.6251e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 1.3580e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 7.0212e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 7.6800e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.0909e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 7.7369e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 8.6611e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 1.9531e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 1.4748e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 6.4487e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 7.1408e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 9.0946e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 5.5640e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 3.4930e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 3.0637e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 2.1977e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 2.3142e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 2.3162e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 2.6045e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 2.2364e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 1.7664e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 2.3148e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 1.7853e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 1.2255e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 4.0532e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 4.2997e-05 - 73ms/epoch - 24ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 4.2591e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 2.6482e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 1.3286e-05 - 74ms/epoch - 25ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 9.9481e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 1.2791e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 1.2232e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 8.5603e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 7.0431e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 6.0965e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 5.9002e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 3.3979e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 2.9070e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 2.9160e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 4.7268e-06 - 76ms/epoch - 25ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 2.6938e-06 - 73ms/epoch - 24ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 3.5608e-06 - 75ms/epoch - 25ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 2.6349e-06 - 75ms/epoch - 25ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 4.5467e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 1.0642e-05 - 74ms/epoch - 25ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 1.0213e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 1.5424e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 1.3748e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 2.3232e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 3.5110e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 2.2491e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 2.2647e-05 - 74ms/epoch - 25ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 1.3246e-05 - 77ms/epoch - 26ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 2.6436e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 2.7820e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 2.6207e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 2.3970e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 1.0526e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 1.4121e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 1.8517e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 1.5493e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 1.7068e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 6.6392e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 4.7954e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 2.7720e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 4.5825e-05 - 75ms/epoch - 25ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 4.4314e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 6.5157e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 7.4772e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 1.1156e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 9.6233e-05 - 74ms/epoch - 25ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 1.3554e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 1.0319e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 1.4014e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 2.5350e-04 - 76ms/epoch - 25ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 2.2938e-04 - 74ms/epoch - 25ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 2.1701e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 2.4405e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 2.9821e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 2.6939e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 4.9034e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 6.1972e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 6.6677e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 7.1186e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 6.9051e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 8.3138e-04 - 72ms/epoch - 24ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 7.8728e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 0.0010 - 65ms/epoch - 22ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 8.7421e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 6.4588e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 3.7392e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 2.6476e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 3.4863e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 3.8125e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 4.0548e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 4.6547e-04 - 72ms/epoch - 24ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 4.0685e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 3.4115e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 3.0681e-04 - 76ms/epoch - 25ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 2.2572e-04 - 72ms/epoch - 24ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 2.2920e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 2.1243e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 2.2643e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 3.6639e-04 - 74ms/epoch - 25ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 3.1975e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 3.9408e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 3.6405e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 4.6060e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 3.8808e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 3.6865e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 3.1113e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 2.6121e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 2.7626e-04 - 72ms/epoch - 24ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 2.8469e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 2.0504e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 1.8178e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 8.3699e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 1.0740e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 1.0078e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 5.9856e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 6.3493e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 4.6825e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 2.8514e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 3.0304e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 3.1836e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 3.1431e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 3.2686e-05 - 73ms/epoch - 24ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 1.5201e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 1.3099e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 6.5481e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 6.0119e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 7.8530e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 5.9130e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 3.4207e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 3.1274e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 4.8749e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 2.4002e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 2.9655e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 3.7653e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 3.7390e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 3.2398e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 3.5502e-06 - 73ms/epoch - 24ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 4.3066e-06 - 74ms/epoch - 25ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 4.2500e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 2.2362e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 5.6883e-06 - 77ms/epoch - 26ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 3.4943e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 3.3298e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 3.4290e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 7.0168e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 5.8649e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 7.7153e-06 - 74ms/epoch - 25ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 6.3213e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 8.7111e-06 - 73ms/epoch - 24ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 8.6888e-06 - 73ms/epoch - 24ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 6.8798e-06 - 75ms/epoch - 25ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 5.4604e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 3.4270e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 5.5584e-06 - 74ms/epoch - 25ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 5.8044e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 9.2931e-06 - 75ms/epoch - 25ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 5.5433e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 7.4193e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 4.1830e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 6.8344e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 6.9557e-06 - 72ms/epoch - 24ms/step\n",
            "14/14 [==============================] - 0s 7ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7882f503b640>"
            ]
          },
          "metadata": {},
          "execution_count": 144
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "YyOarWssKyjN",
        "outputId": "c2d5a8f8-8ab3-479d-e0e4-04ed4a478573"
      },
      "execution_count": 145,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710189209.7388463\n",
            "Mon Mar 11 20:33:29 2024\n"
          ]
        }
      ]
    }
  ]
}